package com.billing.service;

import java.util.List;
import java.util.Map;

import org.springframework.http.StreamingHttpOutputMessage;

import com.billing.model.entity.CrmContact;
import com.billing.model.entity.CrmCustomer;
import com.billing.model.entity.CrmLinkman;
import com.billing.model.entity.CrmUserUploadCard;

public interface CrmService {
	
	/**
	 * 分页查询客户信息
	 * @param userid
	 * @param name
	 * @param pageSize
	 * @param currentPage
	 * @return
	 */
	Map<String, Object> getCustomerPage(String userid,String name,String type,int pageSize,int currentPage);
	
	/**
	 * 新增客户
	 * @param customer
	 * @return
	 */
	int addCustomer(CrmCustomer customer);
	
	/**
	 * 修改客户
	 * @param customer
	 * @return
	 */
	int updateCustomer(CrmCustomer customer);
	
	/**
	 * 根据id查询客户信息
	 * @param id
	 * @return
	 */
	CrmCustomer getCustomerById(String id);
	/**
	 * 根据userid查询客户信息
	 * @param id
	 * @return
	 */
	List<CrmCustomer> getCustomerByUserid(String userid);
//	/**
//	 * 根据userid,公司名称查询未封档客户信息
//	 * @param id
//	 * @return
//	 */
//	List<CrmCustomer> getCustomerByUseridAndName(String userid,String custName);
	/**
	 * 根据userid查询未封档客户信息
	 * @param id
	 * @return
	 */
	List<CrmCustomer> getCustomerByUseridNoBracket(String userid);
	
	/**
	 * 根据客户id查询联系人
	 * @param customerid
	 * @return
	 */
	List<CrmLinkman> getlinkmanByCustomerid(String customerid);
	/**
	 * 根据客户id查询联系人分页
	 * @param customerid
	 * @return
	 */
	Map<String, Object> getlinkmanPageByCustomerid(String customerid,int pageSize,int currentPage);
	/**
	 * 根据id查询联系人信息
	 * @param linkmanid
	 * @return
	 */
	CrmLinkman getlinkmanByid(String linkmanid);
	/**
	 * 新增客户联系人
	 * @param linkman
	 * @return
	 */
	int addlinkman(CrmLinkman linkman);
	/**
	 * 修改客户联系人
	 * @param linkman
	 * @return
	 */
	int updatelinkman(CrmLinkman linkman);
	/**
	 * 分页查询交往记录信息
	 * @param userid
	 * @param custid
	 * @param pageSize
	 * @param currentPage
	 * @return
	 */
	Map<String, Object> getContactPage(String userid,String custId,int pageSize,int currentPage);
	/**
	 * 新增客户交往记录
	 * @param contact
	 * @return
	 */
	void addContact(CrmContact contact);
	/**
	 * 根据id查询客户交往记录
	 * @param id
	 * @return
	 */
	CrmContact getContactById(String id);
	/**
	 * 根据客户联系人id查询跟进记录
	 * @param lkmId
	 * @return
	 */
	List<CrmContact> getCrmContactByLkmid(String lkmId);
	/**
	 * 根据客户联系人id查询跟进记录分页
	 * @param lkmId
	 * @return
	 */
	Map<String,Object> getCrmContactByLkmidPage(String lkmId,int pageSize,int currentPage);
	/**
	 * 根据公司名和用户id查询公司信息
	 * @param custName
	 * @param userid
	 * @return
	 */
	CrmCustomer getCustomerByNameAndUserid(String custName,String userid);
	/**
	 * 客户名是否已经存在
	 * @param custName
	 * @param userid
	 * @param custId
	 * @return
	 */
	boolean customerIsNameExist(String custName,String userid,Integer custId);
	/**
	 * 客户是否已经封档
	 * @param custId
	 * @return
	 */
	boolean customerIsBracket(String custId);
	/**
	 * 统计当月新增客户数
	 * @param userid
	 * @param month
	 * @return
	 */
	int countCustomerByMonth(String userid,String month);
	/**
	 * 统计当月跟进客户数
	 * @param userid
	 * @param month
	 * @return
	 */
	int countCustContactByMonth(String userid,String month);
	/**
	 * 新增名片上传
	 * @param path
	 * @param uploadTime
	 * @param userid
	 * @return
	 */
	int addCardUpload(CrmUserUploadCard uploadCard);
	/**
	 * 查询对应公司的跟进记录
	 * @param custId
	 * @return
	 */
	List<CrmContact> getContactByCust(String custId);
	
	/**
	 * App关键字查询
	 * @param keyword 关键字
	 * @return
	 */
	Map<String, Object> selectByKeyword(String keyword);

	Map<String, Object> selectAllCustomer(int userid, String name, String type, int pageSize, int currentPage);
}
